import { IPSAppDELogicParam } from '../../app/dataentity/ipsapp-delogic-param';
import { IPSAppDataEntity } from '../../app/dataentity/ipsapp-data-entity';
import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDELogicParam } from './ipsdelogic-param';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';
import { PSModelObjectImpl } from '../../psmodel-object-impl';

export class PSDELogicParamImpl extends PSModelObjectImpl implements IPSDELogicParam, IPSAppDELogicParam {
  get codeName(): string {
    return this.M.codeName;
  }

  get defaultValue(): string {
    return this.M.defaultValue;
  }

  get defaultValueType(): string {
    return this.M.defaultValueType;
  }

  get dynaModelFilePath(): string {
    return this.M.dynaModelFilePath;
  }

  get fileType(): 'TEMP' | 'URL' | 'STORAGESERVICE' {
    return this.M.fileType;
  }

  get fileUrl(): string {
    return this.M.fileUrl;
  }

  get logicName(): string {
    return this.M.logicName;
  }

  get memo(): string {
    return this.M.memo;
  }

  get name(): string {
    return this.M.name;
  }

  protected pssyssfplugin: IPSSysSFPlugin | null = null;

  getPSSysSFPlugin(): IPSSysSFPlugin | null {
    if (this.pssyssfplugin != null) return this.pssyssfplugin;
    const value = this.M.getPSSysSFPlugin;
    if (value == null) {
      return null;
    }
    this.pssyssfplugin = this.getPSModel4('res.IPSSysSFPlugin', value, 'getPSSysSFPlugin') as IPSSysSFPlugin;
    return this.pssyssfplugin;
  }

  get psSysSFPlugin(): IPSSysSFPlugin | null {
    return this.getPSSysSFPlugin();
  }

  getPSSysSFPluginMust(): IPSSysSFPlugin {
    const value = this.getPSSysSFPlugin();
    if (value == null) {
      throw new Error('未指定后台扩展插件');
    }
    return value;
  }

  protected parampsappdataentity: IPSAppDataEntity | null = null;

  getParamPSAppDataEntity(): IPSAppDataEntity | null {
    if (this.parampsappdataentity != null) return this.parampsappdataentity;
    const value = this.M.getParamPSAppDataEntity;
    if (value == null) {
      return null;
    }
    this.parampsappdataentity = this.getPSModel4('app.dataentity.IPSAppDataEntity', value, 'getParamPSAppDataEntity') as IPSAppDataEntity;
    return this.parampsappdataentity;
  }

  get paramPSAppDataEntity(): IPSAppDataEntity | null {
    return this.getParamPSAppDataEntity();
  }

  getParamPSAppDataEntityMust(): IPSAppDataEntity {
    const value = this.getParamPSAppDataEntity();
    if (value == null) {
      throw new Error('未指定参数应用实体对象');
    }
    return value;
  }

  protected parampsdataentity: IPSDataEntity | null = null;

  getParamPSDataEntity(): IPSDataEntity | null {
    if (this.parampsdataentity != null) return this.parampsdataentity;
    const value = this.M.getParamPSDataEntity;
    if (value == null) {
      return null;
    }
    this.parampsdataentity = this.getPSModel4('dataentity.IPSDataEntity', value, 'getParamPSDataEntity') as IPSDataEntity;
    return this.parampsdataentity;
  }

  get paramPSDataEntity(): IPSDataEntity | null {
    return this.getParamPSDataEntity();
  }

  getParamPSDataEntityMust(): IPSDataEntity {
    const value = this.getParamPSDataEntity();
    if (value == null) {
      throw new Error('未指定参数实体对象');
    }
    return value;
  }

  get paramTag(): string {
    return this.M.paramTag;
  }

  get paramTag2(): string {
    return this.M.paramTag2;
  }

  get stdDataType(): 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 {
    return this.M.stdDataType != null ? this.M.stdDataType : 0;
  }

  get userCat(): string {
    return this.M.userCat;
  }

  get userTag(): string {
    return this.M.userTag;
  }

  get userTag2(): string {
    return this.M.userTag2;
  }

  get userTag3(): string {
    return this.M.userTag3;
  }

  get userTag4(): string {
    return this.M.userTag4;
  }

  get appContextParam(): boolean {
    return this.M.appContextParam != null ? this.M.appContextParam : false;
  }

  get appGlobalParam(): boolean {
    return this.M.appGlobalParam != null ? this.M.appGlobalParam : false;
  }

  get cloneParam(): boolean {
    return this.M.cloneParam != null ? this.M.cloneParam : false;
  }

  get default(): boolean {
    return this.M.default != null ? this.M.default : false;
  }

  get entityListParam(): boolean {
    return this.M.entityListParam != null ? this.M.entityListParam : false;
  }

  get entityMapParam(): boolean {
    return this.M.entityMapParam != null ? this.M.entityMapParam : false;
  }

  get entityPageParam(): boolean {
    return this.M.entityPageParam != null ? this.M.entityPageParam : false;
  }

  get entityParam(): boolean {
    return this.M.entityParam != null ? this.M.entityParam : false;
  }

  get envParam(): boolean {
    return this.M.envParam != null ? this.M.envParam : false;
  }

  get fileListParam(): boolean {
    return this.M.fileListParam != null ? this.M.fileListParam : false;
  }

  get fileParam(): boolean {
    return this.M.fileParam != null ? this.M.fileParam : false;
  }

  get filterParam(): boolean {
    return this.M.filterParam != null ? this.M.filterParam : false;
  }

  get lastParam(): boolean {
    return this.M.lastParam != null ? this.M.lastParam : false;
  }

  get lastReturnParam(): boolean {
    return this.M.lastReturnParam != null ? this.M.lastReturnParam : false;
  }

  get originEntity(): boolean {
    return this.M.originEntity != null ? this.M.originEntity : false;
  }

  get sessionParam(): boolean {
    return this.M.sessionParam != null ? this.M.sessionParam : false;
  }

  get simpleListParam(): boolean {
    return this.M.simpleListParam != null ? this.M.simpleListParam : false;
  }

  get simpleParam(): boolean {
    return this.M.simpleParam != null ? this.M.simpleParam : false;
  }

  get cls(): string {
    return 'PSDELogicParamImpl';
  }

  instanceof(cls: string): boolean {
    if (cls == 'app.dataentity.IPSAppDELogicParam' || cls == 'dataentity.logic.IPSDELogicParam') return true;
    return super.instanceof(cls);
  }
}
